1. Field of the Invention
The present invention generally relates to data processing and more particularly to debugging computer programs.
2. Description of the Related Art
A programmer develops a software program by producing and entering source code into files using a text editor program. The computer then creates an executable program by translating the source code into machine code. The machine code is the rudimentary instructions understood by a computer. Illustratively, the foregoing software development process is accomplished by running a series of programs. These programs typically include a compiler for translating the source code into machine code and a linker to link the machine code together to form a program.
When developing computer software, it is necessary to perform a function termed “debugging”. Simply stated, debugging is the process of locating and identifying errors in a program under development. Typically, a programmer (also referred to as a “developer”) uses another computer program commonly known as a “debugger” to help debug a program under development. An effective debugger program is necessary for rapid and efficient development of software and typically provides functions including run-to-cursor, step into, step over, step out of, and breakpoints.
While the foregoing conventional debugging tools are helpful, the practice of debugging remains a time consuming and tedious process that often turns into a drawn-out exercise of trial and error. For example, once the portion of code that is raising an un-monitored exception (or unexpected error) is identified, the cause of the error must be determined and a solution must be developed to surmount the error. For example, the error might be due to one of the program's variables being assigned an invalid value. The developer may have to execute the program numerous times with different values assigned to the variable before the correct value (or range of values) is found.
It should be noted that the piece of code being debugged can consist of thousands of lines, and there may be a large team of developers working on the program in a distributed environment. Often different developers may run into the same error at different times. Unfortunately, if the developers are unaware that a particular error has been encountered and solved previously, they may proceed with solving the same problem again; this is a waste of time and effort, unnecessarily incurring cost.
Therefore, there is a need for an improved debugger that provides users with the ability to generate and utilize a debug history in order to optimize the debugging process. Further, the debug history should be accessible via the debugger and should be capable of supporting a large group of users in a distributed environment.